#include"jeu.h"

void afficher(char M[3][3])
{
    int i,j;
    printf("\n\n");
    printf("         ******* TicTacToe *******\n\n\n");
    printf(" ____ ____ ____ ____ ____\n");
    for (i=0; i<3; i++)
    {
        for (j=0; j<3; j++)
        {
            if(M[i][j]=='o'||M[i][j]=='x')
                printf("|%c\t",M[i][j]);
            else
                printf("| \t");
        }

        printf("|\n");
        printf(" ____ ____ ____ ____ ____\n");

    }

}

void grillevide()
{
    int i=5;
    printf("         ******* TicTacToe *******\n\n\n");
    printf(" ____ ____ ____\n");
    printf("|    |    |    |\n");
    printf("|    |    |    |\n",i+3);
    printf("|____|____|____|\n");
    printf("|    |    |    |\n");
    printf("|    |    |    |\n",i);
    printf("|____|____|____|\n");
    printf("|    |    |    |\n");
    printf("|    |    |    |\n");
    printf("|____|____|____|\n\n");

}

void remplir(char M[3][3])
{
    int num=1;

    coup(num,M);
    system("CLS");
    system("COLOR 9");
    afficher(M);
    resultat(M);
    num=2;
    coup(num,M);
    system("CLS");
    system("COLOR 8");
    afficher(M);
    resultat(M);
    num=1;
    coup(num,M);
    system("CLS");
    system("COLOR 7");
    afficher(M);
    resultat(M);
    num=2;
    coup(num,M);
    system("CLS");
    system("COLOR 6");
    afficher(M);
    resultat(M);
    num=1;
    coup(num,M);
    system("CLS");
    system("COLOR 5");
    afficher(M);
    resultat(M);
    num=2;
    coup(num,M);
    system("CLS");
    system("COLOR 4");
    afficher(M);
    resultat(M);
    num=1;
    coup(num,M);
    system("CLS");
    system("COLOR 3");
    afficher(M);
    resultat(M);
    num=2;
    coup(num,M);
    system("CLS");
    system("COLOR 2");
    afficher(M);
    resultat(M);
    num=1;
    coup(num,M);
    system("CLS");
    system("COLOR 1");
    afficher(M);
    resultat(M);
}
void resultat(char M[3][3])
{

    if(   (((M[0][0]==M[1][1])&&(M[1][1]==M[2][2])&&(M[0][0]=='x')))
            ||((M[2][0]==M[1][1])&&(M[1][1]==M[0][2])&&(M[2][0]=='x'))




            ||((M[0][0]==M[0][1])&&(M[0][1]==M[0][2])&&(M[0][0]=='x'))
            ||((M[1][0]==M[1][1])&&(M[1][1]==M[1][2])&&(M[1][0]=='x'))
            ||((M[2][0]==M[2][1])&&(M[2][1]==M[2][2])&&(M[2][0]=='x'))

            ||((M[0][0]==M[1][0])&&(M[1][0]==M[0][2])&&(M[0][0]=='x'))
            ||((M[0][1]==M[1][1])&&(M[1][1]==M[2][1])&&(M[0][1]=='x'))
            ||((M[0][2]==M[1][2])&&(M[1][2]==M[2][2])&&(M[0][2]=='x'))
          )
        {printf("Gagnant: Joueur 1\n");
        exit(0);}


    else if(
            (((M[0][0]==M[1][1])&&(M[1][1]==M[2][2])&&(M[0][0]=='o')))
            ||((M[2][0]==M[1][1])&&(M[1][1]==M[0][2])&&(M[2][0]=='o'))




            ||((M[0][0]==M[0][1])&&(M[0][1]==M[0][2])&&(M[0][0]=='o'))
            ||((M[1][0]==M[1][1])&&(M[1][1]==M[1][2])&&(M[1][0]=='o'))
            ||((M[2][0]==M[2][1])&&(M[2][1]==M[2][2])&&(M[2][0]=='o'))

            ||((M[0][0]==M[1][0])&&(M[1][0]==M[0][2])&&(M[0][0]=='o'))
            ||((M[0][1]==M[1][1])&&(M[1][1]==M[2][1])&&(M[0][1]=='o'))
            ||((M[0][2]==M[1][2])&&(M[1][2]==M[2][2])&&(M[0][2]=='o'))
             )
        {printf("Gagnant: Joueur 2\n");
        exit(0);}
    else

           printf("Partie Null\n");




}


void coup(int num, char M[3][3])
{
    int c;
    do
    {
        printf("joueur %d: ",num);
        scanf("%d",&c);
    }
    while((c<1 || c>9) || (test(M,c)==1));
    if(num==1)
    {
        if (c==1)
            M[0][0]='x';
        else if(c==2)
            M[0][1]='x';
        else if(c==3)
            M[0][2]='x';
        else if(c==4)
            M[1][0]='x';
        else if(c==5)
            M[1][1]='x';
        else if(c==6)
            M[1][2]='x';
        else if(c==7)
            M[2][0]='x';
        else if(c==8)
            M[2][1]='x';
        else if(c==9)
            M[2][2]='x';
        else
            printf("veuillez saisir une case de 1 a 9\n");
    }
    else
    {
        if (c==1)
            M[0][0]='o';

        else if(c==2)
            M[0][1]='o';
        else if(c==3)
            M[0][2]='o';
        else if(c==4)
            M[1][0]='o';
        else if(c==5)
            M[1][1]='o';
        else if(c==6)
            M[1][2]='o';
        else if(c==7)
            M[2][0]='o';
        else if(c==8)
            M[2][1]='o';
        else if(c==9)
            M[2][2]='o';
        else
            printf("veuillez saisir une case de 1 a 9\n");
    }

}

int test(char M[3][3],int c)
{
    if(c==1&& (M[0][0]=='x'||M[0][0]=='o'))
    {
        return 1;
    }
    else
    {
        if(c==2&& (M[0][1]=='x'||M[0][1]=='o'))
        {
            return 1;
        }
        else
        {
            if(c==3&& (M[0][2]=='x'||M[0][2]=='o'))
            {
                return 1;
            }
            else
            {
                if(c==4&& (M[1][0]=='x'||M[1][0]=='o'))
                {
                    return 1;
                }
                else
                {
                    if(c==5&& (M[1][1]=='x'||M[1][1]=='o'))
                    {
                        return 1;
                    }
                    else
                    {
                        if(c==6&& (M[1][2]=='x'||M[1][2]=='o'))
                        {
                            return 1;
                        }
                        else
                        {
                            if(c==7&& (M[2][0]=='x'||M[2][0]=='o'))
                            {
                                return 1;
                            }
                            else
                            {
                                if(c==8&& (M[2][1]=='x'||M[2][1]=='o'))
                                {
                                    return 1;
                                }
                                else
                                {
                                    if(c==9&& (M[2][2]=='x'||M[2][2]=='o'))
                                    {
                                        return 1;
                                    }

                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

